package cn.zyq.demo.system.pay.core.client.dto;

import lombok.Data;

import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;

/**
 * 统一下单 Request DTO
 *
 * @author 芋道源码
 */
@Data
public class PayOrderTransferReqDTO {

    /**
     * 用户 IP
     */
    @NotEmpty(message = "用户 IP 不能为空")
    private String userIp;

    /**
     * 用户账号
     * ali：支付宝登录号 示例值：186xxxxxxxx
     */
    @NotEmpty(message = "用户账号 不能为空")
    private String userAccount;
    /**
     * 用户真实绑定姓名
     * ali：参与方真实姓名。如果非空，将校验收款支付宝账号姓名一致性。
     */
    @NotEmpty(message = "用户名 不能为空")
    private String uname;

    // ========== 商户相关字段 ==========

    /**
     * 商户订单编号
     */
    @NotEmpty(message = "商户订单编号不能为空")
    private String outTradeNo;
    /**
     * 商品标题
     * ali：转账业务的标题，用于在支付宝用户的账单里显示。
     */
    @NotEmpty(message = "账单抬头")
    private String title;
    /**
     * 业务备注。
     */
    private String remark;
    /**
     * 支付结果的 notify 回调地址
     */
    @NotEmpty(message = "支付结果的回调地址不能为空")
    // @URL(message = "支付结果的 notify 回调地址必须是 URL 格式")
    private String notifyUrl;
    /**
     * 支付结果的 return 回调地址
     */
    // @URL(message = "支付结果的 return 回调地址必须是 URL 格式")
    private String returnUrl;

    // ========== 订单相关字段 ==========

    /**
     * 支付金额，单位：分
     */
    @NotNull(message = "支付金额不能为空")
    @DecimalMin(value = "0", inclusive = false, message = "支付金额必须大于零")
    private Long amount;
}
